// 基础控件的传值方式
// 防抖，使用emit
import debounceRef from './ref-debounce.js';
// 不防抖，使用emit
import emitRef from './ref-emit.js';
// 监听size大小
import { watch } from 'vue';
import { theme } from '@/store';
/**
 * 表单子控件的控制函数
 * @param {*} props 组件的 props
 * @param {*} attrs 组件的 attrs
 * @param {*} emit 组件的 emit
 * @returns
 */
export default function itemController(props, attrs, emit) {

	// 父子组件传值的中转站，根据需求调用对应的函数。
	let value = null;

		// 判断是不是需要防抖
		if (props.delay === 0) {
			// 不需要防抖
			// 通过 emit 设置
			value = emitRef(props, emit);
      
		} else {
			// 需要支持防抖
			// 通过 emit 设置
			value = debounceRef(props,  emit, props.delay);
		}
    
	const globalSize = (state) => {
		watch(
			() => theme.globalComponentSize,
			() => {
				if (attrs.size) {
					state.mySize = props.size;
				} else {
					state.mySize = theme.globalComponentSize;
				}
			}
		);
	};
  
	return {
		value,
		globalSize,
	};
}
